//有个内含单词的超大文本文件，给定任意两个不同的单词，找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次，而每次寻找的单词
//不同，你能对此优化吗? 
//
// 示例： 
//
// 
//输入：words = ["I","am","a","student","from","a","university","in","a","city"], 
//word1 = "a", word2 = "student"
//输出：1 
//
// 提示： 
//
// 
// words.length <= 100000 
// 
// Related Topics 数组 字符串 👍 78 👎 0

package com.cute.leetcode.editor.cn;
public class FindClosestLcci {
    public static void main(String[] args) {
        String[] words = {"I","am","a","student","from","a","university","in","a","city"};
        new FindClosestLcci().new Solution().findClosest(words, "a", "student");
    }
    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        /**
         * 寻找两个word之间的最短距离，word可能重复出现
         * 使用两个index保存最近一次出现的位置，分别作差保存最小值
         */
        public int findClosest(String[] words, String word1, String word2) {
            int res = Integer.MAX_VALUE;
            int index1 = -1;
            int index2 = -1;
            for (int i = 0; i < words.length; i++) {
                String  word = words[i];
                if (word.equals(word1)){
                    if (index2 != -1) res = Math.min(res, i - index2);
                    index1 = i;
                }else if (word.equals(word2)){
                    if (index1 != -1) res = Math.min(res, i - index1);
                    index2 = i;
                }
            }
            return res;
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}